package com.ndp.fb.mongo.api;

/**
 * 保存每次发布广告时候的正交集合的cache
 * 需要的时候，从mongo 中重新获取反序列化
 *
 * --------为了保证在远程调用的过程中，不重复的进行序列化和反序列化，使用 string 类型进行传递，在使用的过程中在进行序列化
 * Created by hunk.qin on 2016/1/21.
 */
public interface PublishCacheMongoService {

    int PRESET=0,CREATIVE=1,CAMPAIGN=2,ADSET=3,ADGROUP =4;


    /**
     * 保存发布 cache
     * @param cacheJsonStr
     */
    void save(String cacheJsonStr) throws Exception;

    /**
     * 更新发布cache
     * @param cacheJsonStr
     */
    void update(String batch_id,String cacheJsonStr);

    /**
     * 获取发布 cache
     * @param batch_Id
     * @return
     */
    String getCache(String batch_Id);

    /**
     * 根据 batch id，key 和 需要更新的类型进行状态更新
     * @param batchId
     * @param key
     * @param status
     * @param type CREATIVE=1,CAMPAIGN=2,ADSET=3,ADGROUP =4;
     */
    void updateStatus(Long batchId,String key,int status,int type);


    /**
     * 把对应的Facebook 返回的不同类型的id 填写到 creative id ，Campaign id ,adset id ，type 为具体的对象类型。
     * @param batchId
     * @param key
     * @param id
     * @param type
     */
    void fillFbId(Long batchId,String key,String id,int type);


    /**
     * 根据类型查询该批次下的 creativeMap,CampaignMap等对象，包括Pre 执行成功的前置Set，类型为 PRE Set
     * @param batchId
     * @param type
     * @return
     */
    String findCacheBlockByType(Long batchId,int type);

    /**
     * 查找缓存中，一组对象中的一个，例如 10个创意中的一个， 以key 查找。
     * @param batchId
     * @param type
     * @param key
     * @return
     */
    String findCacheBlockByTypeAndKey(Long batchId,int type,String key);


    Integer findAdCreativeSuccessByCacheId(Long batchId);

    /**
     * 更新视频创意的key
     * @param videoId
     */
    void updateCreativeVideoIdByKkey(String batch_Id,String creativeKey,String videoId);

    void updateAdCreativeSuccessByCacheId(Long batchId, Integer adCreativeSucess);

    String findDPAAttribute(Long batchId);

    String findMarketTargetAttribute(Long batchId);
    

}
